%% main.tex --- файл-обертка для диплома

\documentclass[russian,utf8,simple,floatsection]{eskdtext} 

\include{defs}  % вставляем содержимое служебных инструкций из defs.tex

\setcounter{section}{1}

\ESKDcolumnII{Выбор и обоснование средств проестирование}
\begin{document}
\newcommand{\target}{Выбор инструмента} % Название цели
% Критерии

\newcommand{\critOne}{Удобство использования}
\newcommand{\critOneAbout}{ характеристика показывающая удобство
  использования альтернативы в проектах такого рода.
}

\newcommand{\critTwo}{Скорость разработки}
\newcommand{\critTwoAbout}{
  Данный критерий показывает, на сколько быстро можно создать
  коннечный продукт, в сравнении с другим.
}

\newcommand{\critThree}{Качество документации}
\newcommand{\critThreeAbout}{
  На сколько легко найти описание той или иной функции. На сколько она полна.
}

\newcommand{\critFour}{Рас\-про\-стра\-нен\-ность}
\newcommand{\critFourAbout}{
  Распространена ли альтернатива. Данный критерий показывает, что
  продукт востребован.
}
% Альтернативы
\newcommand{\altOne}{Django}
\newcommand{\altTwo}{Nitrogen}
\newcommand{\altThree}{Ruby On Rails}
\newcommand{\altFour}{PHP}

\section{Выбор и обоснование средств проестирование.}
Так как одно из требований к ПО это переносимость то из множества
языков программирования можно выделить следующие: \altOne ,
\altTwo,\altThree,\altFour.

Для выбора ЯП применим метод анализа иерархий.
Выберем следующие критерии:
\begin{enumerate}
\item \critOne –  \critOneAbout
\item \critTwo -   \critTwoAbout
\item \critThree -  \critThreeAbout
\item \critFour – \critFourAbout
\end{enumerate}

В результате получилась иерархия, представленная на рисунке \ref{fig:sppr}
Суждения ЛПР представлены в таблицах~[\ref{tab:one}-\ref{tab:five}].
\begin{figure}[!h]
  \centering
  \includegraphics[angle=0, width=\textwidth]{sppr}
  \caption{Иерархия  проблемы}
\label{fig:sppr}
\end{figure}

\begin{table}[!h]
  \centering
  \caption{Веса критериев относительно цели}
  \begin{tabular}[h!]{|p{0.2\textwidth}|p{0.1\textwidth}|p{0.1\textwidth}|p{0.20\textwidth}|p{0.15\textwidth}|p{0.08\textwidth}|}
    \hline
    Выбор ЯП&\critOne&\critTwo&\critThree&\critFour&Веса
    \\ \hline
    \critOne&1&1/3&1/2&2&17.18
    \\ \hline
    \critTwo&3&1&3&2&46.59
    \\ \hline
    \critThree&2&1/3&1&1/2&17.18
    \\ \hline
    \critFour&1/2&1/2&2&1&19.02
    \\ \hline
  \end{tabular}
  \label{tab:one}
\end{table}

\begin{table}[!h]
  \centering
  \caption{Веса альтернатив относительно критерия <<\critOne>>}
  \begin{tabular}[h!]{|p{0.2\textwidth}|p{0.1\textwidth}|p{0.1\textwidth}|p{0.20\textwidth}|p{0.15\textwidth}|p{0.08\textwidth}|}
    \hline
    \critOne&\altOne&\altTwo&\altThree&\altFour&Веса
    \\ \hline
    \altOne&1&1&1/3&1/2&14.11
    \\ \hline
    \altTwo&1&1&1/3&1/2&14.11
    \\ \hline
    \altThree&3&3&1&3&45.5
    \\ \hline
    \altFour&2&2&1/3&1&26.27
    \\ \hline
  \end{tabular}
  \label{tab:two}
\end{table}

\begin{table}[!h]
  \centering
  \caption{Веса альтернатив относительно критерия <<\critTwo>>}
  \begin{tabular}[h!]{|p{0.2\textwidth}|p{0.1\textwidth}|p{0.1\textwidth}|p{0.20\textwidth}|p{0.15\textwidth}|p{0.08\textwidth}|}
    \hline
    \critTwo&\altOne&\altTwo&\altThree&\altFour&Веса
    \\ \hline
    \altOne&1&1/2&1/2&1/4&9.854
    \\ \hline
    \altTwo&2&1&1/3&1/4&12.59
    \\ \hline
    \altThree&2&3&1&1/4&21.81
    \\ \hline
    \altFour&4&3&4&1&55.74
    \\ \hline
  \end{tabular}
  \label{tab:three}
\end{table}

\begin{table}[!h]
  \centering
  \caption{Веса альтернатив относительно критерия <<\critThree>>}
  \begin{tabular}[h!]{|p{0.2\textwidth}|p{0.1\textwidth}|p{0.1\textwidth}|p{0.20\textwidth}|p{0.15\textwidth}|p{0.08\textwidth}|}
    \hline
    \critThree&\altOne&\altTwo&\altThree&\altFour&Веса
    \\ \hline
    \altOne&1&3&2&1/3&30.10
    \\ \hline
    \altTwo&1/3&1&1/4&1/3&10.33
    \\ \hline
    \altThree&2&4&1&3&27.20
    \\ \hline
    \altFour&3&3&1/3&1&32.35
    \\ \hline
  \end{tabular}
  \label{tab:four}
\end{table}

\begin{table}[!h]
  \centering
  \caption{Веса альтернатив относительно критерия <<\critFour>>}
  \begin{tabular}[h!]{|p{0.2\textwidth}|p{0.1\textwidth}|p{0.1\textwidth}|p{0.20\textwidth}|p{0.15\textwidth}|p{0.08\textwidth}|}
    \hline
    \critThree&\altOne&\altTwo&\altThree&\altFour&Веса
    \\ \hline
    \altOne&1&3&3&1/2&32.98
    \\ \hline
    \altTwo&1/3&1&1&1/2&14.46
    \\ \hline
    \altThree&1/3&1&1&1/2&14.46
    \\ \hline
    \altFour&2&2&2&1&38.08
    \\ \hline
  \end{tabular}
  \label{tab:five}
\end{table}

В результате альтернативы получили следующие оценки:
\begin{enumerate}
\item \altOne - 41.57
\item \altTwo - 30.61
\item \altThree - 15.45
\item \altFour - 12.34
\end{enumerate}

Django (Джанго) — свободный фреймворк для веб-приложений на языке
Python. Изначально проект был создан для управления новостными сайтами
LJWorld.com, lawrence.com и KUsports.com, принадлежащими компании The
World Company (Лоуренс, Канзас (en), США).


Сайт на Django строится из одного или нескольких приложений, которые
рекомендуется делать отчуждаемыми и подключаемыми. Это одно из
существенных архитектурных отличий этого фреймворка от некоторых
других (например Ruby on Rails).


Также в отличие от других фреймворков обработчики URL в Django
конфигурируются явно при помощи регулярных выражений, а не выводятся
автоматически из структуры моделей контроллеров.


Для работы с базой данных Django использует собственный ORM, в котором
модель данных описывается классами Python, и по ней генерируется схема
базы данных.

Архитектура Django похожа на «Модель-Вид-Контроллер» (MVC). Контроллер
классической модели MVC примерно соответствует уровню, который в
Django называется Вид (англ. View), а презентационная логика Вида
реализуется в Django уровнем Шаблонов (англ. Template). Из-за этого
уровневую архитектуру Django часто называют «Модель-Шаблон-Вид» (MTV).

Первоначальная разработка Django, как средства для работы новостных
ресурсов, достаточно сильно отразилась на его архитектуре: он
предоставляет ряд средств, которые помогают в быстрой разработке
веб-сайтов информационного характера. Так, например, разработчику не
требуется создавать контроллеры и страницы для административной части
сайта, в Django есть встроенное приложение для управления содержимым,
которое можно включить в любой сайт, сделанный на Django, и которое
может управлять сразу несколькими сайтами на одном
сервере. Административное приложение позволяет создавать, изменять и
удалять любые объекты наполнения сайта, протоколируя все совершенные
действия, и предоставляет интерфейс для управления пользователями и
группам (с пообъектным назначением прав).

В дистрибутив Django также включены приложения для системы
комментариев, синдикации RSS и Atom, «статических страниц» (которыми
можно управлять без необходимости писать контроллеры и представления),
перенаправления URL и другое.

Некоторые возможности Django:

\begin{itemize}
\item ORM, API доступа к БД с поддержкой транзакций
\item встроенный интерфейс администратора, с уже имеющимися
  переводами на многие языки
\item диспетчер URL на основе регулярных выражений
\item расширяемая система шаблонов с тегами и наследованием
\item система кеширования
\item интернационализация
\item подключаемая архитектура приложений, которые можно устанавливать
  на любые Django-сайты
\item «generic views» — шаблоны функций контроллеров
\item авторизация и аутентификация, подключение внешних модулей аутентификации: LDAP, OpenID и проч.
\item система фильтров («middleware») для построения дополнительных
  обработчиков запросов, как например включённые в дистрибутив фильтры
  для кеширования, сжатия, нормализации URL и поддержки анонимных
  сессий
\item библиотека для работы с формами (наследование, построение форм
  по существующей модели БД)
\item встроенная автоматическая документация по тегам шаблонов и
  моделям данных, доступная через административное приложение
\end{itemize}

Различные компоненты фреймворка между собой связаны слабо, поэтому
достаточно просто любую часть заменить на аналогичную. Например,
вместо встроенных шаблонов можно использовать Mako или Jinja.

Django проектировался для работы под управлением Apache с модулем
mod\_python и с использованием PostgreSQL в качестве базы данных.

С включением поддержки WSGI, Django может работать под управлением
FastCGI, mod\_wsgi или SCGI на Apache и других серверах (lighttpd,
nginx,$\ldots$) и подключаться к СУБД MySQL, SQLite и Oracle.

В составе Django присутствует собственный веб-сервер для
разработки. Сервер автоматически определяет изменения в файлах
исходного кода проекта и перезапускается, что очень ускоряет процесс
разработки на Python. Но при этом он работает в однопоточном режиме и
пригоден только для процесса разработки и отладки приложения.


В качестве СУБД будет использоваться PostgreSQL - (произносится
«Пост-Грес-Кью-Эл» или просто «постгрес») — свободная
объектно-реляционная система управления базами данных (СУБД). 

Является свободной альтернативой коммерческим СУБД (таким как Oracle
Database, Microsoft SQL Server, IBM DB2, Informix и СУБД производства
Sybase) вместе с другими свободными СУБД (такими как MySQL и
Firebird). 

Существует в реализациях для следующих платформ: Linux,
Solaris/OpenSolaris, Win32, Mac OS X, FreeBSD, QNX 4.25, QNX 6.

PostgreSQL базируется на языке SQL и поддерживает многие из
возможностей стандарта SQL:2003 (ISO/IEC 9075).

PostgreSQL ведет свою «родословную» от некоммерческой СУБД Postgres,
разработанной, как и многие open-source проекты, в Калифорнийском
университете в Беркли. К разработке Postgres, начавшейся в 1986-ом
году, имел непосредственное отношение Майкл Стоунбрейкер, руководитель
более раннего проекта Ingres, на тот момент уже приобретённого
компанией Computer Associates. Само название «Postgres»
расшифровывалось как «Post Ingres», соответственно, при создании
Postgres были применены многие уже ранее сделанные наработки.

Стоунбрейкер и его студенты разрабатывали новую СУБД в течение восьми
лет, с 1986 по 1994 год. За этот период в синтаксис были введены
процедуры, правила, пользовательские типы и многие другие
компоненты. Работа не прошла даром — в 1995 году разработка снова
разделилась: Стоунбрейкер использовал полученный опыт в создании
коммерческой СУБД Illustra, продвигаемой его собственной одноимённой
компанией (приобретённой впоследствии компанией Informix), а его
студенты разработали новую версию Postgres — Postgres95, в которой
язык запросов POSTQUEL — наследие Ingres — был заменен на SQL.

В этот момент разработка Postgres95 была выведена за пределы
университета и передана команде энтузиастов. С этого момента эта СУБД
получила имя, под которым она известна и развивается в текущий момент
— PostgreSQL.

Выбор сделан основываясь на том, что Django разрабатывался в расчете
на то, что будет использоваться вместе с данной СУБД.
\end{document}
